package chapter07;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;

public class Java11_Collection_Map_03 {
    public static void main(String[] args) {
        // TODO 集合-迭代器
        HashMap<String,Integer> map = new HashMap<String, Integer>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);

        Set<String> keys = map.keySet();

//        for (String key : keys) {
//            if ("b".equals(key)) {
//                map.remove("c");    // 报错：java.util.ConcurrentModificationException，原始set集合长度为3，删除key后set长度发生变化导致数据不一致
//            }
//            System.out.println(map.get(key));
//        }

//        for (String key : keys) {
//            if ("c".equals(key)) {
//                map.remove("b");    // 未发生报错：因为循环至最后才发生改变，对set已经不再产生影响
//            }
//            System.out.println(map.get(key));
//        }

        // TODO 迭代器
        Iterator<String> iterator = keys.iterator();
        // 用于判断是否存在下一条数据
        while (iterator.hasNext()) {
            // 获取下一条数据
            String key = iterator.next();
            if ("b".equals(key)) {
                // remove()只能对当前数据删除,防止数据被恶意修改导致数据不一致
                iterator.remove();
            }
            System.out.println(map.get(key));   // 1 null 3
        }
    }
}
